import createElement from "./createElement";
import updateChildren from "./updateChildren";


export default function patchVnode(oldVnode, newVnode) {
    // 判断 oldVnode 与 newVnode 是内存中同一个对象
    if (oldVnode === newVnode) return;
    // 判断 newVnode 的text 属性是否存在
    if (newVnode.text != undefined && (newVnode.children == undefined || newVnode.children.length == 0)) {
        // 判断 newVnode 的text 与 oldVnode 的text 相等？
        if (newVnode.text != oldVnode.text) {
            oldVnode.elm.innerText = newVnode.text;
        }
        return;
    }
    // 判断 oldVnode 的children属性是否存在
    if (oldVnode.children != undefined && oldVnode.children.length > 0) {
        // oldVnode 和 newVnode 都存在 children 属性
        updateChildren(oldVnode.elm, oldVnode.children, newVnode.children)
    } else {
        // 意味着 oldVnode 存在 text 属性 :
        // 1.将 oldVnode 的 text 删除 
        // 2.将 newVnode 的子节点插入 DOM 中
        oldVnode.elm.innerHTML = ''
        for (let i = 0; i < newVnode.children.length; i++) {
            let ch = newVnode.children[i]
            let chDOM = createElement(ch)
            oldVnode.elm.appendChild(chDOM)
        }

    }
}
